import time

import requests
from wxauto import WeChat

# python版本 3.11.9 
# 包文件要求 安装 在pytho311/script文件夹下 
    # pip install wxauto -i https://pypi.tuna.tsinghua.edu.cn/simple 
    # pip install pyautogui -i https://pypi.tuna.tsinghua.edu.cn/simple 
    # pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple
    # pip install  Pillow -i https://pypi.tuna.tsinghua.edu.cn/simple
    # pip install gevent -i https://pypi.tuna.tsinghua.edu.cn/simple
    #  # 这是一个示例版本号，请根据实际情况调整
    # package==version

    # 安装 pip install 模块名
    # 卸载 pip uninstall 模块名
    # 查看已安装的模块：pip list
    # 版本冲突 python -m pip pip install 模块名


# 微信版本号 微信3.9.11.17版本
# 打包
    # pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller #清华源    
    # Pyinstaller -F py_word.py 可执行文件名exe
    # pyinstaller --onefile main.py                 #生成一个文件
    # pyinstaller --onefile --noconsole main.py     #不生成控制台


print(' APP启动 成功')
wx = WeChat()
print(f'微信版本号:{wx.VERSION}')  # 输出当前 wxauto 版本


gropu_list = [
    '今天的我',
    '三只大'
]


listen_list = [
    '@大哥的小号',
    '@砖头'
   
]


for i in gropu_list:
    wx.AddListenChat(who=i, savepic=True)

#wx.AddListenChat(who="三只大", savepic=False)  # 添加监听对象


while True:
    msgs = wx.GetListenMessage()
    for chat in msgs:
        who = chat.who         # 获取聊天窗口名（人或群名）
        print(f'-----0-监控消息-{who}--')
        one_msgs = msgs.get(chat)   # 获取消息内容
        print(f'-----1-监控消息-{one_msgs}--')

        # 回复收到
        for msg  in one_msgs: 

            print(f'-----2-监控内容-{msg }--')
            if msg.type == 'friend':                 
                # 获取消息类型 
                # "Self" 自己发的 
                # 'friend' 其他人发的  
                # 'recall'撤回消息
                # 'time' 时间消息
                # wx.Search(keyword = 'my friend\'s ID')   查找微信好友或关键词，只要在keyword里填写想要查找的关键词或者好友名称即可。查找的名称最好完整匹配，不完全匹配只会选取搜索框第一个
                # ===================================================   
                print(f'----1-{msg.content}')
                print(f'----2-{msg.sender}')
                print(f'----3-{msg.type}')
                print(f'----4-{msg.sender_remark}')
                print(f'----5-{msg.info}')
                print(f'----6-{msg.id}')
                # 这里可以将msg.sender改为msg.sender_remark，获取备注名
                # ===================================================   
                content = msg .content.strip()   # 获取消息内容，字符串类型的消息内容  
                txtArr = content.split()
                sender = msg.sender


                # msg.quote("因花木成畦手自栽基本面")  # 引用消息进行回复

                if len(txtArr) > 1:
                     # 检查数组中是否包含至少一个首字母为 '@' 的字符串 结果为这个数组              
                    at_person =list(filter(lambda s:s.startswith('@') ,txtArr))

                    #在 数组取 at 人字符串
                    person = at_person[0].strip() #去尾部空串
                    
                    #print(f'{sender.rjust(20)}：{jsonEntity.content}')  #rjust20个长度

                    if person in listen_list: #如果 @人 是目标对象
                        msgStr = content.replace(person,'').strip()  # 整个文本删除 @人 剩下 消息内容  并去尾部空串

                         # print(f"@指定人员{+txtArr[0]} -- 消息列表{txtArr[1]}")
                        print(f"-----------------消息内容[{msgStr}]@指定人员[{person}] 发送人[{sender}]-------------------")

                         # 请求地址
                        url = 'http://api.qingyunke.com/api.php?key=free&appid=0&msg={msgStr}'

                        # 发送带参数的 GET 请求
                        response = requests.get(url)                        
                        # 检查请求是否成功
                        if response.status_code == 200:
                            data = response.json()
                            print(f"get返回结果 {data}")
                            # 回复消息 给发送的人
                            #chat.SendMsg(f"@{sender}\u2005 {data['content']}")
                            msg.quote(f"@{sender}\u2005 {data['content']}")  # 引用消息进行回复
                           
                        else:
                            print(f"Failed XXXXXXX data: {response.status_code}")                                               

                       
    time.sleep(1)